<?php

namespace Agp\CoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * Agp\CoreBundle\Entity\FormaPagamento
 *
 * @ORM\Table(name="forma_pagamento")
 * @ORM\Entity()
 */
class FormaPagamento
{
    /**
     * @var integer $codFormaPagamento
     *
     * @ORM\Column(name="cod_forma_pagamento", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    protected $codFormaPagamento;
    
    const F_BOLETO = 'Boleto';
    const F_VISA = 'Visa';
    const F_MASTER_CARD = 'Master Card';
    const F_DINERS = 'Diners';
    const F_DISCOVER = 'Discover';
    const F_ELO = 'Elo';
    const F_AMEX = 'American Express';
    const F_JCB = 'Jcb';
    const F_AURA = 'Aura';
    const F_MAESTRO = 'Master Maestro';
    const F_ELECTRON = 'Visa Electron';
    const F_HIPERCARD = 'Hipercard';
    const F_DESCONHECIDO = 'Desconhecido';
    /**
     * @var string $nome
     *
     * @ORM\Column(name="descricao", type="string", length=42, nullable=false)
     * @Assert\NotBlank()
     */
    protected $descricao;
    
    const FI_AGAPE = 'Agape';
    const FI_CIELO = 'Cielo';
    const FI_REDE = 'Rede';
    /**
     * @var string $nome
     *
     * @ORM\Column(name="filiacao", type="string", length=42, nullable=false)
     * @Assert\NotBlank()
     */
    protected $filiacao;
    
    const TP_DEBITO = 'debit';
    const TP_CREDITO = 'credit';
    /**
     * @var string $tipo
     *
     * @ORM\Column(name="tipo", type="string", length=42, nullable=false)
     * @Assert\NotBlank()
     */
    protected $tipo;
    
    /**
     * @var string $tipo
     *
     * @ORM\Column(name="ordem", type="integer", nullable=false)
     * @Assert\NotBlank()
     */
    protected $ordem;
    
    /**
     * @var string $apelido
     *
     * @ORM\Column(name="apelido", type="string", length=42, nullable=false)
     * @Assert\NotBlank()
     */
    protected $apelido;

    /* hack for Acls */
    public function getId(){
        return 'class';
    }
    
    public function __construct() {
    }

    public function __toString() {
        return $this->descricao;
    }

    public function getCodFormaPagamento() {
        return $this->codFormaPagamento;
    }

    public function setCodFormaPagamento($codFormaPagamento) {
        $this->codFormaPagamento = $codFormaPagamento;
    }

    public function getEmpresa() {
        return $this->empresa;
    }

    public function setEmpresa($empresa) {
        $this->empresa = $empresa;
    }

    public function getDescricao() {
        return $this->descricao;
    }

    public function setDescricao($descricao) {
        $this->descricao = $descricao;
    }
    
    public function getDescricaoCielo(){
        switch ($this->descricao){
            case self::F_MASTER_CARD:
                return 'mastercard';
                break;
            case self::F_VISA:
                return 'visa';
                break;
            case self::F_AMEX:
                return 'amex';
                break;
            case self::F_AURA:
                return 'aura';
                break;
            case self::F_DINERS:
                return 'diners';
                break;
            case self::F_DISCOVER:
                return 'discover';
                break;
            case self::F_JCB:
                return 'jcb';
                break;
            case self::F_ELO:
                return 'elo';
                break;
            case self::F_MAESTRO:
                return 'mastercard';
                break;
            case self::F_ELECTRON:
                return 'visa';
                break;
            
        }
    }
    
    public function getFiliacao() {
        return $this->filiacao;
    }

    public function setFiliacao($filiacao) {
        $this->filiacao = $filiacao;
    }
    
    public function getTipo() {
        return $this->tipo;
    }

    public function setTipo($tipo) {
        $this->tipo = $tipo;
    }
    
    public function getOrdem() {
        return $this->ordem;
    }

    public function setOrdem($ordem) {
        $this->ordem = $ordem;
    }

    public function getApelido() {
        return $this->apelido;
    }

    public function setApelido($apelido) {
        $this->apelido = $apelido;
    }
    
    public function isDebit(){
        return $this->tipo == self::TP_DEBITO;
    }
}

